Field of the Invention
The present invention is directed in general to program code analysis. In one aspect, the present invention relates to a method, apparatus, system, and computer program product for navigating the execution history of source code.
Description of the Related Art
Existing software development tools for editing, compiling, and debugging software typically include analysis tools for viewing information about a program's execution. Tracing is a known technique for providing such analysis, and involves recording information during program execution to generate a trace log that can be analyzed to provide an indication of the application progress during execution. For example, program trace tools are typically executed by a program debugger to generate and display a program execution trace in a predetermined format (e.g., trace event table format or CallTree structure with collapsible nodes on each function call boundary) which contains a list of events that help identify the program flow, like branches, function calls, and the like. However, such program execution traces do not efficiently or intuitively convey control flow information about the program execution to the developer and do not provide an efficient trace search mechanism for identifying the points when certain functions were called, thereby impeding the ability to identify the root-cause of a problem during program execution, especially for large traces. As a result, the existing solutions for capturing, analyzing, and displaying information about a program's execution are extremely difficult at a practical level.